package ben.samplegame.collision;

import ben.samplegame.sprite.SampleBullet;
import ben.samplegame.sprite.SampleEnemy;
import ben.samplegame.sprite.SamplePlayer;
import game.sprite.collision.CollisionBehavior;
import game.sprite.collision.ICollidable;

/**
 * 
 * @author team2
 * Collision abstraction for behaviors of ICollidable.
 */
public abstract class GravishotCollision extends CollisionBehavior {

    /**
     * Abstraction of all collision behaviors in Gravishot implementation.
     * @param collidable The thing for which the behaviors are for.
     */
    public GravishotCollision (ICollidable collidable) {
        super(collidable);
    }
    /**
     * Behavior of the ICollidable when it hits a player.
     * @param player Player being collided with.
     */
    public abstract void visit(SamplePlayer player);
    /**
     * Behavior of the ICollidable when it hits a player.
     * @param bullet Bullet being collided with.
     */
    public abstract void visit(SampleBullet bullet);
    /**
     * Behavior of the ICollidable when it hits a player.
     * @param enemy Enemy being collided with.
     */
    public abstract void visit(SampleEnemy enemy);
}
